/* Copyright (c) [2024] [ylc]. Licensed under Apache-2.0 License. */
#ifndef __HT1622_H_
#define __HT1622_H_

#include "my_define.h"

#define HT_SYSDIS 	0x00   //0b1000 0000 0000   关闭系统振荡器LCD偏压发生器
#define HT_SYSEN 	0x01   //0b1000 0000 0010  开启系统振荡器
#define HT_LCDOFF 	0x02   //0b1000 0000 0110  开启LCD偏压
#define HT_LCDON 	0x03   //0b1000 0000 0110  开启LCD偏压

#define HT_TIMDIS	 0x04   //
#define HT_WDTDIS2 0x05   //0b1000 0000 1010  禁止看门狗
#define HT_RC32	  0x18   //0b1000 0011 0000  内部时钟
#define HT_TONEOFF 0x08   //0b1000 0001 0000  关闭声音输出

#define HT_IRQDIS 0x80   //

#define HT_DAT_MAX	30

typedef volatile struct{
	void (*InitPort)(void);	
	void (*DelayUs)(void);	  
	void (*CS_H)(void);      	
	void (*CS_L)(void);       
	void (*WR_H)(void);      	
	void (*WR_L)(void);      
	void (*DAT_H)(void);      	
	void (*DAT_L)(void);    
}mHTTypedef_t;
extern mHTTypedef_t Ht1;

typedef volatile union{
	struct{
		//SEG14
		u8 NG291:1;
		u8 NG292:1;
		u8 NG293:1;
		u8 NG294:1;
		u8 D1:1;
		u8 E1:1;
		u8 F1:1;
		u8 A1:1;
		
		u8 NG301:1;
		u8 NG302:1;
		u8 NG303:1;
		u8 NG304:1;
		u8 RES301:1;
		u8 RES302:1;
		u8 RES303:1;
		u8 fs:1;	//??		
		//SEG13
		u8 NG271:1;
		u8 NG272:1;
		u8 NG273:1;
		u8 NG274:1;
		u8 unit_K:1;
		u8 pa:1;
		u8 Kgf:1;
		u8 bat1:1;
		
		u8 NG281:1;
		u8 NG282:1;
		u8 NG283:1;
		u8 NG284:1;
		u8 L9:1;
		u8 wifi:1;
		u8 sqr:1;
		u8 Mpa:1;
		//SEG12
		u8 NG251:1;
		u8 NG252:1;
		u8 NG253:1;
		u8 NG254:1;
		u8 lock:1;
		u8 ble:1;
		u8 bat3:1;
		u8 bat2:1;
		
		u8 NG261:1;
		u8 NG262:1;
		u8 NG263:1;
		u8 NG264:1;
		u8 RES261:1;
		u8 L10:1;
		u8 R10:1;
		u8 R9:1;
		//SEG11
		u8 NG231:1;
		u8 NG232:1;
		u8 NG233:1;
		u8 NG234:1;
		u8 R5:1;
		u8 R6:1;
		u8 R7:1;
		u8 R8:1;
		
		u8 NG241:1;
		u8 NG242:1;
		u8 NG243:1;
		u8 NG244:1;
		u8 R1:1;
		u8 R2:1;
		u8 R3:1;
		u8 R4:1;
		//SEG10
		u8 NG211:1;
		u8 NG212:1;
		u8 NG213:1;
		u8 NG214:1;
		u8 unit_m:1;
		u8 unit_per:1;//%
		u8 bar:1;
		u8 psi:1;
		
		u8 NG221:1;
		u8 NG222:1;
		u8 NG223:1;
		u8 NG224:1;
		u8 unit_dc:1;	//???C
		u8 unit_df:1;	//???F
		u8 unit_uc:1;
		u8 unit_A:1;
		//SEG9
		u8 NG191:1;
		u8 NG192:1;
		u8 NG193:1;
		u8 NG194:1;
		u8 unit_uF:1;
		u8 C5:1;
		u8 G5:1;
		u8 B5:1;
		
		u8 NG201:1;
		u8 NG202:1;
		u8 NG203:1;
		u8 NG204:1;
		u8 C9:1;
		u8 G9:1;
		u8 B9:1;
		u8 mmHg:1;
		//SEG8
		u8 NG171:1;
		u8 NG172:1;
		u8 NG173:1;
		u8 NG174:1;
		u8 D5:1;
		u8 E5:1;
		u8 F5:1;
		u8 A5:1;
		
		u8 NG181:1;
		u8 NG182:1;
		u8 NG183:1;
		u8 NG184:1;
		u8 D9:1;
		u8 E9:1;
		u8 F9:1;
		u8 A9:1;
		
		//SEG7
		u8 NG151:1;
		u8 NG152:1;
		u8 NG153:1;
		u8 NG154:1;
		u8 H4:1;
		u8 C4:1;
		u8 G4:1;
		u8 B4:1;
		
		u8 NG161:1;
		u8 NG162:1;
		u8 NG163:1;
		u8 NG164:1;
		u8 C8:1;
		u8 G8:1;
		u8 B8:1;
		u8 RES161:1;
		//SEG6
		u8 NG131:1;
		u8 NG132:1;
		u8 NG133:1;
		u8 NG134:1;
		u8 D4:1;
		u8 E4:1;
		u8 F4:1;
		u8 A4:1;
		
		u8 NG141:1;
		u8 NG142:1;
		u8 NG143:1;
		u8 NG144:1;
		u8 D8:1;
		u8 E8:1;
		u8 F8:1;
		u8 A8:1;
		//SEG5
		u8 NG111:1;
		u8 NG112:1;
		u8 NG113:1;
		u8 NG114:1;
		u8 H3:1;
		u8 C3:1;
		u8 G3:1;
		u8 B3:1;
		
		u8 NG121:1;
		u8 NG122:1;
		u8 NG123:1;
		u8 NG124:1;
		u8 C7:1;
		u8 G7:1;
		u8 B7:1;
		u8 inchHg:1;
		//SEG4
		u8 NG91:1;
		u8 NG92:1;
		u8 NG93:1;
		u8 NG94:1;
		u8 D3:1;
		u8 E3:1;
		u8 F3:1;
		u8 A3:1;
		
		u8 NG101:1;
		u8 NG102:1;
		u8 NG103:1;
		u8 NG104:1;
		u8 D7:1;
		u8 E7:1;
		u8 F7:1;
		u8 A7:1;
		//SEG3
		u8 NG71:1;
		u8 NG72:1;
		u8 NG73:1;
		u8 NG74:1;
		u8 H2:1;
		u8 C2:1;
		u8 G2:1;
		u8 B2:1;
		
		u8 NG81:1;
		u8 NG82:1;
		u8 NG83:1;
		u8 NG84:1;
		u8 C6:1;
		u8 G6:1;
		u8 B6:1;
		u8 mmH2o:1;
		//SEG2
		u8 NG51:1;
		u8 NG52:1;
		u8 NG53:1;
		u8 NG54:1;
		u8 D2:1;
		u8 E2:1;
		u8 F2:1;
		u8 A2:1;
		
		u8 NG61:1;
		u8 NG62:1;
		u8 NG63:1;
		u8 NG64:1;
		u8 D6:1;
		u8 E6:1;
		u8 F6:1;
		u8 A6:1;
		//SEG1
		u8 NG31:1;
		u8 NG32:1;
		u8 NG33:1;
		u8 NG34:1;
		u8 H1:1;
		u8 C1:1;
		u8 G1:1;
		u8 B1:1;
		
		u8 NG41:1;
		u8 NG42:1;
		u8 NG43:1;
		u8 NG44:1;
		u8 RES41:1;
		u8 ALM2:1;
		u8 ALM1:1;
		u8 inchH2o:1;
		//SEG0
		u8 NG11:1;
		u8 NG12:1;
		u8 NG13:1;
		u8 NG14:1;
		u8 L5:1;
		u8 L6:1;
		u8 L7:1;
		u8 L8:1;
		
		u8 NG21:1;
		u8 NG22:1;
		u8 NG23:1;
		u8 NG24:1;
		u8 L1:1;
		u8 L2:1;
		u8 L3:1;
		u8 L4:1;
	}led;
	u8 buf[HT_DAT_MAX];
}HT_SEG_t;
extern volatile HT_SEG_t HT_SEG;




void HT_WrCmd(mHTTypedef_t* ht,u8 ucTmpCmd);
void HT_WrNDat(mHTTypedef_t* ht,u8 addr,u8 *dat,u8 cnt);

void ht1622_init(void);
void ht1622_off(void);
void ht1622_on(void);
void ht1622_clear(void);
void ht1622_refresh(void);

#endif



